接下來的文章,我把範圍限縮在「桌上型作業系統」,目前主流的作業系統有 Windows, macOS, 以及 Linux。上述作業系統 JUCE 皆有支援。
「跨平台軟體」指的是可以在多種作業系統或不同硬體架構上運作的程式。
各個作業系統有著截然不同的使用者介面(GUI),底層架構也有差異。若以各平台提供的 SDK 來開發同一個產品,GUI 以外的程式碼或許可以共用,但使用者介面(GUI)因為核心架構不同,能共用的程式碼不多。「跨平台開發框架」即用於解決不同平台共用程式碼的問題。
不過,要達到不同平台間程式碼共用,很不容易。而且不同解決方案的設計取捨也不目同,常見的「跨平台框架」如 Qt、JUCE,其使用者介面非原生(Native),而是框架自行模擬原生控制項的行為以及外觀。
跨平台軟體開發中,「原生(Native)」指的是使用平台提供的 SDK 所開發的程式,各類控制項的行為以及外觀皆與系統一致。以這個標準來看,JUCE 的控制項非「原生(Native)」。
JUCE 將不同平台底層的運作細節以 C++ 封裝成一致的介面,用戶端在不同平台上使用封裝的介面,簡化跨平台開發的麻煩。下圖中可以打勾的控制項為 juce::ToggleButton:
(圖片來自 JUCE 官網)
上述介面在不同平台間,外觀皆相同,但控制項皆非平台原生,而是 JUCE 所繪。
Hi 大山姆,
請教一下,貴司是做什麼領域會用到 JUCE?
Hello 華叔,
我們主要依客戶的硬體開發客制的軟體。時有 Windows/macOS 平台同時支援的需求,再加上相對熟悉的程式語言為 C++,故選用 JUCE。